const { ListNode, LinkedList } = require('../2. 链表/1. 链表基础/1. 建立线性链表.js')
// 给定一个链表和整数k，将链表每个节点向右移动k个位置

// 思路，将链表首尾相连，成循环链表，找到指定位置断开即可
// 向右移动k个位置，那需要从链表的头节点开始遍历 size - k的位置断开

function rotateRight(head, k) {
    if (k === 0 || !head || !head.next) {
        return head
    }
    let count = 1
    let cur = head
    // 这里判断next，因为要得到最后一个节点
    while (cur.next) {
        count++
        cur = cur.next
    }
    cur.next = head
    let cut = count - k % count
    while (cut--) {
        cur = cur.next
    }
    // cur就是最后一个节点，cur.next就是新的头节点
    let newHead = cur.next
    cur.next = null
    return newHead
}

let head = [0,1,2,3,5], k = 4
let node = new LinkedList(head)
let res = rotateRight(node.head, k)
console.log(res)